/**
 * TabBar模式管理工具
 * 支持原生TabBar和自定义TabBar的切换
 */

export const TabBarMode = {
  NATIVE: 'native',
  CUSTOM: 'custom'
}

// TabBar配置  native为原生TabBar，custom为自定义TabBar
export const TabBarConfig = {
  DEFAULT_MODE: TabBarMode.NATIVE  // 默认模式，可修改为TabBarMode.CUSTOM
}

export class TabBarManager {
  static STORAGE_KEY = 'tabbar_mode'
  
  /**
   * 设置TabBar模式
   * @param {string} mode - TabBar模式
   */
  static setMode(mode) {
    if (!Object.values(TabBarMode).includes(mode)) {
      console.warn(`Invalid tabbar mode: ${mode}`)
      return
    }
    uni.setStorageSync(this.STORAGE_KEY, mode)
  }
  
  /**
   * 获取当前TabBar模式
   * @returns {string} 当前模式
   */
  static getMode() {
    return uni.getStorageSync(this.STORAGE_KEY) || TabBarConfig.DEFAULT_MODE
  }
  
  /**
   * 初始化TabBar模式（应用启动时调用）
   * 根据配置和存储决定启动模式
   */
  static initializeMode() {
    const savedMode = uni.getStorageSync(this.STORAGE_KEY)
    const currentMode = savedMode || TabBarConfig.DEFAULT_MODE
    
    console.log('TabBar Initialize - Saved Mode:', savedMode)
    console.log('TabBar Initialize - Default Mode:', TabBarConfig.DEFAULT_MODE)
    console.log('TabBar Initialize - Current Mode:', currentMode)
    
    // 如果没有保存的模式，使用默认配置
    if (!savedMode) {
      uni.setStorageSync(this.STORAGE_KEY, TabBarConfig.DEFAULT_MODE)
      console.log('TabBar Initialize - Set default mode to storage:', TabBarConfig.DEFAULT_MODE)
    }
    
    return currentMode
  }
  
  /**
   * 获取启动页面URL
   * @returns {string} 启动页面路径
   */
  static getStartupUrl() {
    const mode = this.initializeMode()
    if (mode === TabBarMode.CUSTOM) {
      return '/pages/tabbar/tabbar'
    } else {
      return '/pages/home/home'
    }
  }
  
  /**
   * 切换到原生TabBar
   */
  static switchToNative() {
    this.setMode(TabBarMode.NATIVE)
    uni.reLaunch({
      url: '/pages/home/home'
    })
  }
  
  /**
   * 切换到自定义TabBar
   */
  static switchToCustom() {
    this.setMode(TabBarMode.CUSTOM)
    uni.reLaunch({
      url: '/pages/tabbar/tabbar'
    })
  }
  
  /**
   * 判断是否为原生模式
   * @returns {boolean}
   */
  static isNativeMode() {
    return this.getMode() === TabBarMode.NATIVE
  }
  
  /**
   * 判断是否为自定义模式
   * @returns {boolean}
   */
  static isCustomMode() {
    return this.getMode() === TabBarMode.CUSTOM
  }
  
  /**
   * 设置默认模式（用于配置修改）
   * @param {string} mode - 默认模式
   */
  static setDefaultMode(mode) {
    if (!Object.values(TabBarMode).includes(mode)) {
      console.warn(`Invalid default tabbar mode: ${mode}`)
      return
    }
    // 这里可以根据需要扩展，比如写入配置文件等
    console.log(`Default tabbar mode set to: ${mode}`)
    console.log('Please update TabBarConfig.DEFAULT_MODE in the code and restart the app')
  }
  
  /**
   * 获取默认模式
   * @returns {string} 默认模式
   */
  static getDefaultMode() {
    return TabBarConfig.DEFAULT_MODE
  }
  
  /**
   * 重置TabBar模式（清除本地存储，重新使用配置的默认模式）
   */
  static resetToDefault() {
    uni.removeStorageSync(this.STORAGE_KEY)
    console.log('TabBar mode reset to default:', TabBarConfig.DEFAULT_MODE)
    
    // 重启应用到默认模式对应的页面
    const startupUrl = this.getStartupUrl()
    uni.reLaunch({
      url: startupUrl
    })
  }
  
  /**
   * 切换模式
   */
  static toggleMode() {
    if (this.isNativeMode()) {
      this.switchToCustom()
    } else {
      this.switchToNative()
    }
  }
}
